R es tanto un lenguaje de programación como un programa.
R es una derivación de S, un lenguaje de programación creado por John Chambers en 1975-76 para Bell Labs.
R fue creado en 1992 por Ross Ihaka y Robert Gentleman (Universidad de Auckland).
R fue creado en 1992 por Ross Ihaka y Robert Gentleman (Universidad de Auckland).
R fue creado en 1992 por Ross Ihaka y Robert Gentleman (Universidad de Auckland).
Versión inicial fue lanzada en 1995.
R fue creado en 1992 por Ross Ihaka y Robert Gentleman (Universidad de Auckland).
Versión inicial fue lanzada en 1995.
Versión actual: 3.4.2
Porque R…
Porque R… con R,
Porque R… con R, cigarro.
Porque R… con R, cigarro.
Tanto R como RStudio son gratuitos.
R simplifica enormemente la replicabilidad de nuestro análisis:
R simplifica la colaboración:
R puede trabajar con todo tipo de base de datos.
R está en constante expansión (paquetes).
Es (relativamente) "fácil" encontrar respuestas a dudas de código:
Es un entorno de desarrollo integrado que simplifica y hace más amigable el uso de R.
Creado en 2010 por Joseph J. Allaire.
Versión inicial fue lanzada en 2011.
Versión actual: 1.0.383
Dos sabores:
Para hacer nuestra vida menos miserable al usar R.
Está integrada por cuatro páneles:
Está integrada por cuatro páneles:
Editor de código
Consola
Está integrada por cuatro páneles:
Editor de código
Consola
Ambiente/Historia
Está integrada por cuatro páneles:
Editor de código
Consola
Ambiente/Historia
Miscelania Don Segasi
R nos permite realizar diversas operaciones:
# Desde los cálculos más sencillos 2 + 2
## [1] 4
4 * (6/3)
## [1] 8
74/3 + (10)^3
## [1] 1024.667
R nos permite realizar diversas operaciones:
# Pasando por resumenes estadísticos summary(mtcars) # mtcars es una base de datos que viene precargada en R
R nos permite realizar diversas operaciones:
# Pasando por resumenes estadísticos summary(mtcars) # mtcars es una base de datos que viene precargada en R
## mpg cyl disp hp ## Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0 ## 1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5 ## Median :19.20 Median :6.000 Median :196.3 Median :123.0 ## Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7 ## 3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0 ## Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0 ## drat wt qsec vs ## Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000 ## 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000 ## Median :3.695 Median :3.325 Median :17.71 Median :0.0000 ## Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375 ## 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000 ## Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000 ## am gear carb ## Min. :0.0000 Min. :3.000 Min. :1.000 ## 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000 ## Median :0.0000 Median :4.000 Median :2.000 ## Mean :0.4062 Mean :3.688 Mean :2.812 ## 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000 ## Max. :1.0000 Max. :5.000 Max. :8.000
R nos permite realizar diversas operaciones:
# Pasando por resumenes estadísticos mean(mtcars$mpg) # Promedio
## [1] 20.09062
R nos permite realizar diversas operaciones:
# Pasando por resumenes estadísticos mean(mtcars$mpg) # Promedio
## [1] 20.09062
median(mtcars$mpg) # Mediana
## [1] 19.2
R nos permite realizar diversas operaciones:
# Pasando por resumenes estadísticos mean(mtcars$mpg) # Promedio
## [1] 20.09062
median(mtcars$mpg) # Mediana
## [1] 19.2
sd(mtcars$mpg) # Desviación estándar
## [1] 6.026948
R nos permite realizar diversas operaciones:
# Hasta cálculos más complejos
library(ineq) # Cargar el paquete ineq. Más adelante les explico la lógica
# de los paquetes en R
ineq(mtcars$wt,
type="Gini") # Calcular el índice de Ginni
R nos permite realizar diversas operaciones:
# Hasta cálculos más complejos
library(ineq) # Cargar el paquete ineq. Más adelante les explico la lógica
# de los paquetes en R
ineq(mtcars$wt,
type="Gini") # Calcular el índice de Gini
## [1] 0.1640012
R nos permite realizar diversas operaciones:
# Hasta cálculos más complejos lm(mpg ~ wt, data = mtcars) # Modelos de regresión lineal
R nos permite realizar diversas operaciones:
# Hasta cálculos más complejos lm(mpg ~ wt, data = mtcars) # Modelos de regresión lineal
## ## Call: ## lm(formula = mpg ~ wt, data = mtcars) ## ## Coefficients: ## (Intercept) wt ## 37.285 -5.344
R nos permite generar bases de datos con diversas estructuras. Por ejemplo:
c(11, 43, 7, 23.45) # Númerico o numeric
## [1] 11.00 43.00 7.00 23.45
c("manzana", "pera", "carnitas", "crema") # Texto o character
## [1] "manzana" "pera" "carnitas" "crema"
R nos permite generar bases de datos con diversas estructuras. Por ejemplo:
R nos permite generar bases de datos con diversas estructuras. Por ejemplo:
# Matriz de datos numéricos matrix(c(1, 3, 4, 2, 8, 10), nrow = 2)
## [,1] [,2] [,3] ## [1,] 1 4 8 ## [2,] 3 2 10
R nos permite generar bases de datos con diversas estructuras. Por ejemplo:
# Matriz de datos tipo texto o character
matrix(c("vaso", "llaves", "anillo", "lentes", "botella", "tarjeta"), ncol = 2)
## [,1] [,2] ## [1,] "vaso" "lentes" ## [2,] "llaves" "botella" ## [3,] "anillo" "tarjeta"
R nos permite generar bases de datos con diversas estructuras. Por ejemplo:
R nos permite generar bases de datos con diversas estructuras. Por ejemplo:
# Data frame con datos numéricos data.frame(col_1 = c(1, 3, 4), col_2 = c(2, 8, 10))
## col_1 col_2 ## 1 1 2 ## 2 3 8 ## 3 4 10
R nos permite generar bases de datos con diversas estructuras. Por ejemplo:
# Data frame con datos numéricos y de texto
data.frame(col_1 = c(1, 3, 4), col_2 = c("lentes", "botella", "tarjeta"))
## col_1 col_2 ## 1 1 lentes ## 2 3 botella ## 3 4 tarjeta
R nos permite cargar datos de manera flexible, ya que podemos:
Archivo .csv desde el disco local
library(readr) # Cargar el paquete readr
read_csv("02_datos/cemabe_cdmx.csv")
## # A tibble: 8,601 x 267 ## X1 ID_INM CLAVE_CT ENT NOM_ENT MUN NOM_MUN ## <int> <int> <chr> <int> <chr> <int> <chr> ## 1 1 199533 09DPR3037W2 9 Distrito Federal 2 Azcapotzalco ## 2 2 199680 09DJN0776G7 9 Distrito Federal 2 Azcapotzalco ## 3 3 199529 09DJN0789K7 9 Distrito Federal 2 Azcapotzalco ## 4 4 199512 09DPR2446T7 9 Distrito Federal 2 Azcapotzalco ## 5 5 199679 09DST0027G1 9 Distrito Federal 2 Azcapotzalco ## 6 6 199493 09DPR3030C1 9 Distrito Federal 2 Azcapotzalco ## 7 7 199588 09DPR2882U5 9 Distrito Federal 2 Azcapotzalco ## 8 8 199635 09DJN0260K1 9 Distrito Federal 2 Azcapotzalco ## 9 9 199644 09FUA0010E1 9 Distrito Federal 2 Azcapotzalco ## 10 10 199651 09DES0294K1 9 Distrito Federal 2 Azcapotzalco ## # ... with 8,591 more rows, and 260 more variables: LOC <int>, ## # NOM_LOC <chr>, AGEB <chr>, MZA <int>, NOMBRECT <chr>, NIVEL <int>, ## # MODALIDAD <int>, TURNO <int>, CONTROL <int>, ENT_ADMON <int>, ## # P4A <chr>, P4B <chr>, P4C <chr>, P4D <chr>, P4E <chr>, P4F <chr>, ## # P4G <int>, P4H <chr>, P4I <chr>, P4J <chr>, P4K <chr>, P148A <int>, ## # P148B <int>, P148C <int>, P148D <int>, P148E <int>, P148F <int>, ## # P148G <int>, P148H <int>, P149 <int>, P150 <int>, P151 <chr>, ## # P152 <int>, P153 <int>, P154 <chr>, P155 <int>, P156 <int>, ## # P157 <int>, P158 <int>, P159 <int>, P160 <int>, P161 <int>, ## # P162 <int>, P163 <int>, P164 <int>, P165 <int>, P166 <int>, ## # P167 <int>, P168 <int>, P169 <int>, P170 <int>, P171 <int>, ## # P172 <int>, P173 <int>, P174 <int>, P175 <int>, P176 <int>, ## # P177 <int>, P178 <int>, P179 <int>, P180 <int>, P181 <int>, ## # P182 <int>, P183 <int>, P184 <int>, P185 <int>, P186 <int>, ## # P187 <int>, P188 <int>, P189 <int>, P190 <int>, P191 <int>, ## # P192 <int>, P193 <int>, P194 <int>, P195 <int>, P196 <int>, ## # P197 <int>, P198 <int>, P199 <int>, P200 <int>, P201 <int>, ## # P202 <int>, P203 <int>, P204 <int>, P205 <int>, P206 <int>, ## # P207 <int>, P208 <int>, P209 <int>, P210 <int>, P211 <int>, ## # P212 <int>, P213 <int>, P214 <int>, P215 <int>, P216 <int>, ## # P217 <int>, P218 <int>, P219 <int>, ...
Archivo .csv desde una página web
Archivo .csv desde una página web
library(readr) # Cargar el paquete readr
read_csv("http://segasi.com.mx/clases/cide/vis_man/datos/cemabe_cdmx.csv")
Archivo .csv desde una página web
library(readr) # Cargar el paquete readr
read_csv("http://segasi.com.mx/clases/cide/vis_man/datos/cemabe_cdmx.csv")
## # A tibble: 8,601 x 267 ## X1 ID_INM CLAVE_CT ENT NOM_ENT MUN NOM_MUN ## <int> <int> <chr> <int> <chr> <int> <chr> ## 1 1 199533 09DPR3037W2 9 Distrito Federal 2 Azcapotzalco ## 2 2 199680 09DJN0776G7 9 Distrito Federal 2 Azcapotzalco ## 3 3 199529 09DJN0789K7 9 Distrito Federal 2 Azcapotzalco ## 4 4 199512 09DPR2446T7 9 Distrito Federal 2 Azcapotzalco ## 5 5 199679 09DST0027G1 9 Distrito Federal 2 Azcapotzalco ## 6 6 199493 09DPR3030C1 9 Distrito Federal 2 Azcapotzalco ## 7 7 199588 09DPR2882U5 9 Distrito Federal 2 Azcapotzalco ## 8 8 199635 09DJN0260K1 9 Distrito Federal 2 Azcapotzalco ## 9 9 199644 09FUA0010E1 9 Distrito Federal 2 Azcapotzalco ## 10 10 199651 09DES0294K1 9 Distrito Federal 2 Azcapotzalco ## # ... with 8,591 more rows, and 260 more variables: LOC <int>, ## # NOM_LOC <chr>, AGEB <chr>, MZA <int>, NOMBRECT <chr>, NIVEL <int>, ## # MODALIDAD <int>, TURNO <int>, CONTROL <int>, ENT_ADMON <int>, ## # P4A <chr>, P4B <chr>, P4C <chr>, P4D <chr>, P4E <chr>, P4F <chr>, ## # P4G <int>, P4H <chr>, P4I <chr>, P4J <chr>, P4K <chr>, P148A <int>, ## # P148B <int>, P148C <int>, P148D <int>, P148E <int>, P148F <int>, ## # P148G <int>, P148H <int>, P149 <int>, P150 <int>, P151 <chr>, ## # P152 <int>, P153 <int>, P154 <chr>, P155 <int>, P156 <int>, ## # P157 <int>, P158 <int>, P159 <int>, P160 <int>, P161 <int>, ## # P162 <int>, P163 <int>, P164 <int>, P165 <int>, P166 <int>, ## # P167 <int>, P168 <int>, P169 <int>, P170 <int>, P171 <int>, ## # P172 <int>, P173 <int>, P174 <int>, P175 <int>, P176 <int>, ## # P177 <int>, P178 <int>, P179 <int>, P180 <int>, P181 <int>, ## # P182 <int>, P183 <int>, P184 <int>, P185 <int>, P186 <int>, ## # P187 <int>, P188 <int>, P189 <int>, P190 <int>, P191 <int>, ## # P192 <int>, P193 <int>, P194 <int>, P195 <int>, P196 <int>, ## # P197 <int>, P198 <int>, P199 <int>, P200 <int>, P201 <int>, ## # P202 <int>, P203 <int>, P204 <int>, P205 <int>, P206 <int>, ## # P207 <int>, P208 <int>, P209 <int>, P210 <int>, P211 <int>, ## # P212 <int>, P213 <int>, P214 <int>, P215 <int>, P216 <int>, ## # P217 <int>, P218 <int>, P219 <int>, ...
Archivo .xlsx desde el disco local
Archivo .xlsx desde el disco local
library(readxl) # Cargar el paquete readxl
read_xls("02_datos/execum_2016/docentes_total.xlsx")
Archivo .xlsx desde el disco local
library(readxl) # Cargar el paquete readxl
# Carga desde el disco local
read_xls("02_datos/execum_2016/execum_2016/docentes_total.xlsx")
## # A tibble: 46 x 13 ## X__1 X__2 `2007` ## <dbl> <chr> <dbl> ## 1 NA Total Nacional * 283523 ## 2 1 BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA 3264 ## 3 2 CENTRO DE INVESTIGACION Y DE ESTUDIOS AVANZADOS DEL IPN 634 ## 4 3 COLEGIO DE POSGRADUADOS 635 ## 5 4 EL COLEGIO DE MEXICO 177 ## 6 5 INSTITUTO POLITECNICO NACIONAL 8771 ## 7 6 INSTITUTO TECNOLOGICO DE SONORA 1632 ## 8 7 UNIVERSIDAD AUTONOMA AGRARIA ANTONIO NARRO 507 ## 9 8 UNIVERSIDAD AUTONOMA BENITO JUAREZ DE OAXACA 1138 ## 10 9 UNIVERSIDAD AUTONOMA CHAPINGO 686 ## # ... with 36 more rows, and 10 more variables: `2008` <dbl>, ## # `2009` <dbl>, `2010` <dbl>, `2011` <dbl>, `2012` <dbl>, `2013` <dbl>, ## # `2014` <dbl>, `2015` <dbl>, Abs. <dbl>, `%` <dbl>
Archivo .dta desde el disco local
library(haven) # Cargar el paquete haven
# Carga desde el disco local
read_dta("02_datos/execum_2016/ensanut_2016/ensanut_obesidad_2016.dta")
## # A tibble: 8,354 x 81 ## idinsert folio int entidad desc_ent munici ## <dbl> <chr> <dbl> <chr> <chr> <chr> ## 1 1083390 010010001209A0020131 1 01 01 AGUASCALIENTES 001 ## 2 1083393 010010001209A0020161 1 01 01 AGUASCALIENTES 001 ## 3 1082667 010010001209A0080071 2 01 01 AGUASCALIENTES 001 ## 4 1082738 010010001209A0080101 1 01 01 AGUASCALIENTES 001 ## 5 1083478 010010001209A0120041 1 01 01 AGUASCALIENTES 001 ## 6 1083394 010010001209A0120121 1 01 01 AGUASCALIENTES 001 ## 7 1083397 010010001209A0120171 2 01 01 AGUASCALIENTES 001 ## 8 1082049 010010001209A0210011 1 01 01 AGUASCALIENTES 001 ## 9 1082097 010010001209A0210051 1 01 01 AGUASCALIENTES 001 ## 10 1082098 010010001209A0210081 1 01 01 AGUASCALIENTES 001 ## # ... with 8,344 more rows, and 75 more variables: desc_mun <chr>, ## # locali <chr>, desc_loc <chr>, manzana <chr>, ageb <chr>, inth <dbl>, ## # maq <chr>, completa <dbl+lbl>, sexo <dbl+lbl>, edad_i <dbl>, ## # edad <dbl>, meses <dbl>, intsel <dbl+lbl>, intsel2 <dbl+lbl>, ## # peso <dbl+lbl>, peso2 <dbl+lbl>, ropa <dbl+lbl>, rpeso <dbl+lbl>, ## # talla <dbl+lbl>, talla2 <dbl+lbl>, rtalla <dbl+lbl>, emb <dbl+lbl>, ## # temb <dbl+lbl>, cintura <dbl+lbl>, cintura2 <dbl+lbl>, ## # rcintura <dbl+lbl>, cadera <dbl+lbl>, cadera2 <dbl+lbl>, ## # rcadera <dbl+lbl>, amputa <dbl+lbl>, ppeso <dbl+lbl>, panto <dbl+lbl>, ## # panto2 <dbl+lbl>, rpanto <dbl+lbl>, rodilla <dbl+lbl>, ## # rodilla2 <dbl+lbl>, rrodilla <dbl+lbl>, hemien <dbl+lbl>, ## # hemien2 <dbl+lbl>, rhemien <dbl+lbl>, brazo <dbl+lbl>, ## # brazo2 <dbl+lbl>, rbrazo <dbl+lbl>, sistol3 <dbl+lbl>, ## # diastol3 <dbl+lbl>, sistol4 <dbl+lbl>, diastol4 <dbl+lbl>, ## # tbrazo <dbl+lbl>, htension <chr>, rtension <dbl+lbl>, ## # tiempo_gen <date>, origen <dbl+lbl>, c1 <dbl>, est_var <dbl>, ## # region_h <dbl+lbl>, code_upm <chr>, rural <dbl+lbl>, ponde_f <dbl>, ## # pesoprom <dbl>, tallaprom <dbl>, grupoednut <dbl+lbl>, imc <dbl>, ## # edadmeses <dbl>, imc_valid <dbl>, imc_valid_clas <dbl+lbl>, ## # imc_valid_clas_sp_mas_ob <dbl+lbl>, prom_peso <dbl>, prom_talla <dbl>, ## # talla_m <dbl>, talla_m2 <dbl>, imc2 <dbl>, imc_cat <dbl>, ## # prom_cintura <dbl>, ob_ab_idf <dbl>, edad_decil <dbl+lbl>
Una de las principales fortalezas de R son sus gráficas y mapas.
R nos permite controlar hasta el más mínimo detalle de una visualización.
Los resultados pueden ser de una gran calidad.
Ejemplo con R base
plot(diamonds$carat, diamonds$price, # diamonds es un df precargado en ggplot2
main = "Relación entre el número de carats de un diamante y su precio",
xlab = "Número de carats",
ylab = "Precio")
Ejemplo con ggplot2
library(ggplot2) # Cargar paquete ggplot2
ggplot(diamonds, aes(x = carat, y = price)) +
geom_point() +
coord_cartesian(ylim = c(0, 20000)) +
labs(title = "Relación entre el número de carats de un diamante y su precio",
x = "Número de carats",
y = "Precio")
)
R nos permite guardar en su memoria temporal "cosas".
La lista de "cosas" es enorme e incluye:
suma <- 7 + 4
suma
## [1] 11
x <- c(41, 5, 76)
x
## [1] 41 5 76
soy_una_matriz <- matrix(c(1, 3, 4, 2, 8, 10), nrow = 2)
soy_una_matriz
## [,1] [,2] [,3] ## [1,] 1 4 8 ## [2,] 3 2 10
soy_un_df <- data.frame(col_1 = c(1, 3, 4), col_2 = c(2, 8, 10))
soy_un_df
## col_1 col_2 ## 1 1 2 ## 2 3 8 ## 3 4 10
g <- ggplot(diamonds, aes(x = carat, y = price)) + geom_point()
g <- ggplot(diamonds, aes(x = carat, y = price)) + geom_point() g
bd <- read_csv("http://segasi.com.mx/clases/cide/vis_man/datos/cemabe_cdmx.csv")
## Warning: Missing column names filled in: 'X1' [1]
## Parsed with column specification: ## cols( ## .default = col_integer(), ## CLAVE_CT = col_character(), ## NOM_ENT = col_character(), ## NOM_MUN = col_character(), ## NOM_LOC = col_character(), ## AGEB = col_character(), ## NOMBRECT = col_character(), ## P4A = col_character(), ## P4B = col_character(), ## P4C = col_character(), ## P4D = col_character(), ## P4E = col_character(), ## P4F = col_character(), ## P4H = col_character(), ## P4I = col_character(), ## P4J = col_character(), ## P4K = col_character(), ## P151 = col_character(), ## P154 = col_character(), ## P264B = col_character(), ## P264C = col_character() ## # ... with 21 more columns ## )
## See spec(...) for full column specifications.
bd
## # A tibble: 8,601 x 267 ## X1 ID_INM CLAVE_CT ENT NOM_ENT MUN NOM_MUN ## <int> <int> <chr> <int> <chr> <int> <chr> ## 1 1 199533 09DPR3037W2 9 Distrito Federal 2 Azcapotzalco ## 2 2 199680 09DJN0776G7 9 Distrito Federal 2 Azcapotzalco ## 3 3 199529 09DJN0789K7 9 Distrito Federal 2 Azcapotzalco ## 4 4 199512 09DPR2446T7 9 Distrito Federal 2 Azcapotzalco ## 5 5 199679 09DST0027G1 9 Distrito Federal 2 Azcapotzalco ## 6 6 199493 09DPR3030C1 9 Distrito Federal 2 Azcapotzalco ## 7 7 199588 09DPR2882U5 9 Distrito Federal 2 Azcapotzalco ## 8 8 199635 09DJN0260K1 9 Distrito Federal 2 Azcapotzalco ## 9 9 199644 09FUA0010E1 9 Distrito Federal 2 Azcapotzalco ## 10 10 199651 09DES0294K1 9 Distrito Federal 2 Azcapotzalco ## # ... with 8,591 more rows, and 260 more variables: LOC <int>, ## # NOM_LOC <chr>, AGEB <chr>, MZA <int>, NOMBRECT <chr>, NIVEL <int>, ## # MODALIDAD <int>, TURNO <int>, CONTROL <int>, ENT_ADMON <int>, ## # P4A <chr>, P4B <chr>, P4C <chr>, P4D <chr>, P4E <chr>, P4F <chr>, ## # P4G <int>, P4H <chr>, P4I <chr>, P4J <chr>, P4K <chr>, P148A <int>, ## # P148B <int>, P148C <int>, P148D <int>, P148E <int>, P148F <int>, ## # P148G <int>, P148H <int>, P149 <int>, P150 <int>, P151 <chr>, ## # P152 <int>, P153 <int>, P154 <chr>, P155 <int>, P156 <int>, ## # P157 <int>, P158 <int>, P159 <int>, P160 <int>, P161 <int>, ## # P162 <int>, P163 <int>, P164 <int>, P165 <int>, P166 <int>, ## # P167 <int>, P168 <int>, P169 <int>, P170 <int>, P171 <int>, ## # P172 <int>, P173 <int>, P174 <int>, P175 <int>, P176 <int>, ## # P177 <int>, P178 <int>, P179 <int>, P180 <int>, P181 <int>, ## # P182 <int>, P183 <int>, P184 <int>, P185 <int>, P186 <int>, ## # P187 <int>, P188 <int>, P189 <int>, P190 <int>, P191 <int>, ## # P192 <int>, P193 <int>, P194 <int>, P195 <int>, P196 <int>, ## # P197 <int>, P198 <int>, P199 <int>, P200 <int>, P201 <int>, ## # P202 <int>, P203 <int>, P204 <int>, P205 <int>, P206 <int>, ## # P207 <int>, P208 <int>, P209 <int>, P210 <int>, P211 <int>, ## # P212 <int>, P213 <int>, P214 <int>, P215 <int>, P216 <int>, ## # P217 <int>, P218 <int>, P219 <int>, ...
¿Para que nos sirve guardar estas "cosas" en la memoria de R?
Para reutilizarlas.
Por ejemplo:
x <- c(7, 8, 1) y <- c(72, 18, 41)
x + y
## [1] 79 26 42
soy_un_df <- data.frame(col_1 = c(1, 3, 4), col_2 = c(2, 8, 10))
soy_un_df[, 2] # Seleccion la segunda columna a la "antigüita"
## [1] 2 8 10
g <- ggplot(diamonds, aes(x = carat, y = price)) + geom_point()
g + theme_minimal()
Cada vez que "guardamos" alguna cosa en R generamos un objeto.
Estos objetos "viviran" en la memoria de R mientras dure nuestra sesión de trabajo.
Por ello, en términos estrictos, en R no guardamos "cosas", sino que las asignamos temporalmente a un objeto.
Por default, R viene con muchos paquetes y funciones precargadas.
El más importante de ellos es el paquete base.
Por default, R viene con muchos paquetes y funciones precargadas.
El más importante de ellos es el paquete base.
Con el tiempo, se han desarrollado diversos paquetes para mejorar y/o extender las capacidades de R.
Hay dos formas de instalar y cargar paquetes:
install.packages("tidyverse") # Instalar
library(tidyverse) # Cargar
Hay dos formas de instalar y cargar paquetes:
Hay dos formas de instalar y cargar paquetes.
Ojo: Cada vez que inicien una sesión deben cargar los paquetes que utilizarán en la misma.
El tipo de datos y la estructura de los datos que utilizamos en R condiciona lo que podemos hacer con ellos.
Existen diversos tipos de datos en R.
En este taller nos concentraremos en cinco:
numericintegercharacterfactorlogicalEn la mayor parte de los casos, R considera a los números como datos de tipo numeric.
# Número decimal decimal <- 10.5 class(decimal)
## [1] "numeric"
# Número entero entero <- 10 class(entero)
## [1] "numeric"
Sin embargo, en ciertas ocasiones R considera a los números enteros como datos integer.
Ejemplo: Base de datos de las IESP
# Opción 2: Cargar bd utilizando URL
bd_iesp <- read.csv(
url("http://segasi.com.mx/clases/cide/vis_man/datos/bd_iesp_07_10.csv")
)
str(bd_iesp) # Analizar la estructura de la bd
## 'data.frame': 129 obs. of 8 variables: ## $ yr : int 2007 2008 2009 2007 2008 2009 2007 2008 2009 2007 ... ## $ inst : Factor w/ 43 levels "Benemerita Universidad Autonoma de Puebla",..: 1 1 1 2 2 2 3 3 3 4 ... ## $ acronimo: Factor w/ 43 levels "BUAP","CINVESTAV",..: 1 1 1 2 2 2 4 4 4 3 ... ## $ d1 : int 3264 3141 3169 634 544 566 635 610 379 177 ... ## $ m1 : int 44545 45524 50088 1844 2004 2109 852 843 855 331 ... ## $ pa1 : int 170 162 139 56 54 54 38 37 33 18 ... ## $ s2 : num 2042 2069 2210 1657 1754 ... ## $ tipo : Factor w/ 2 levels "Estatal","Federal": 1 1 1 2 2 2 2 2 2 2 ...
Sin embargo, en ciertas ocasiones R considera a los números enteros como datos integer.
Ejemplo: Base de datos de las IESP
Si queremos guardar una variable como integer debemos utilizar la función as.integer()
# Número entero entero <- 10 class(entero)
## [1] "numeric"
# Número entero, transformado con as.integer() entero <- 10 entero <- as.integer(entero) class(entero)
## [1] "integer"
Cuando generamos una variable que incluye texto, por lo general R la considera como datos de tipo character.
# Variable de texto texto <- "Soy un breve pero feliz texto." class(texto)
## [1] "character"
Ojo: Las comillas son muy poderosas en R
# Aquí soy numeric entero <- 10 class(entero)
## [1] "numeric"
# Pero si me pones comillas, me transformo en character entero <- "10" class(entero)
## [1] "character"
En ocasiones deseamos especificar que una variable que contiene texto, debe se tratada como una variable categórica.
Ejemplo: género, entidad, nivel educativo, etc.
Esto es útil para, entre otras cosas:
Si queremos definir una variable de texto como factor hay dos opciones.
# Si la variable fue creada primero como character, hay que transfomarla a factor iesp_grandota <- "UNAM" class(iesp_grandota) # Soy un dato de tipo character :(
## [1] "character"
# Pero ahora me van a convertir en un dato de tipo factor :D
iesp_grandota <- as.factor("UNAM")
class(iesp_grandota)
## [1] "factor"
Si queremos definir una variable de texto como factor hay dos opciones.
# Si la variable aún no ha sido creada, hay que especificar desde el comienzo que
# queremos considerarla como factor
# Voy a ser un dato de tipo factor desde mi nacimiento :)
iesp_grandota <- as.factor("UNAM")
class(iesp_grandota)
## [1] "factor"
R considera cada categoría de un factor como un level o nivel.
R siempre ordena los levels alfabéticamente y asigna un número (que no vemos) a cada nivel.
Para conocer el número de niveles que tiene un factor, utilizar la función nlevels()
# Explorar los nombres en la base de datos bd_iesp names(bd_iesp)
## [1] "yr" "inst" "acronimo" "d1" "m1" "pa1" ## [7] "s2" "tipo"
# ¿Cuántos niveles tiene la variable "acronimo"? nlevels(bd_iesp$acronimo)
## [1] 43
Para conocer el tipo de niveles que tiene un factor, utilizar la función levels()
# ¿Qué tipo de niveles tiene la variable "acronimo"? levels(bd_iesp$acronimo)
## [1] "BUAP" "CINVESTAV" "COLMEX" ## [4] "COLPOS" "IPN" "IT Sonora" ## [7] "U de Colima" "U de G" "U de Guanajuato" ## [10] "U Veracruzana" "UA Aguascalientes" "UA Campeche" ## [13] "UA Cd. Juárez" "UA Chapingo" "UA Chiapas" ## [16] "UA Chihuahua" "UA Coahuila" "UA del Carmen" ## [19] "UA Guerrero" "UA Nayarit" "UA Querétaro" ## [22] "UA Sinaloa" "UA Tamaulipas" "UA Tlaxcala" ## [25] "UA Yucatán" "UA Zacatecas" "UAAAN" ## [28] "UABC" "UABCS" "UABJ Oaxaca" ## [31] "UAE Hidalgo" "UAE México" "UAE Morelos" ## [34] "UAM" "UANL" "UASLP" ## [37] "UJA Tabasco" "UJE Durango" "UMSNH" ## [40] "UNAM" "UNISON" "UPN" ## [43] "UQRoo"
Generalmente, los datos de tipo logical son creados al comparar dos variables o analizar su tipo.
x = 1 # Soy una (espantosa) x y = 2 # Soy una y (y el doble de la x) z <- x > y # ¿x es más grande que y? Guardar respuesta en z z # Imprimir el dato z
## [1] FALSE
class(z) # ¿Qué tipo de dato es z?
## [1] "logical"
bd_iesp <- read.csv(
url("http://segasi.com.mx/clases/cide/vis_man/datos/bd_iesp_07_10.csv")
) # Ojo: Noten que estoy usando read.csv(), no read_csv()
is.numeric(bd_iesp$s2) # ¿La variable "s2" es de tipo numeric?
## [1] TRUE
is.character(bd_iesp$inst) # ¿La variable "inst" es de tipo character?
## [1] FALSE
bd_iesp <- read.csv(
url("http://segasi.com.mx/clases/cide/vis_man/datos/bd_iesp_07_10.csv")
) # Ojo: Noten que estoy usando read.csv(), no read_csv()
is.na(bd_iesp$acronimo) # ¿Algún valor de la variable "acronimo" es de tipo NA?
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ## [12] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ## [23] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ## [34] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ## [45] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ## [56] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ## [67] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ## [78] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ## [89] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ## [100] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ## [111] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE ## [122] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Existen diversas funciones que nos permiten transformar el tipo de un dato:
as.numeric() # Guardar dato como numeric as.integer() # Guardar dato como integer as.character() # Guardar dato como character as.factor() # Guardar dato como factor
Los vectores son la estructura de datos más básica y común en R.
Son el principal caballo de batalla.
Definición: un vector es un grupo o colección de valores almacenados como un solo objeto.

Existen diversas funciones para construir un vector:
c() - Combinar datos numéricos o caracteresseq() - Secuencia de valores numéricosrep() - Secuencia de valores numéricos repetidosa:b - Secuencia consecutiva de valores numéricosEjemplos con c():
c(4, 137, 68) # Soy un vector numérico
## [1] 4 137 68
sr_vector_num <- c(4, 137, 68) # Ahora tengo nombre porque me guardaron en un objeto :D sr_vector_num
## [1] 4 137 68
¿Cómo acordarse de c()? -> c de
combinar.
Ejemplos con c() y una variable character:
c("Quen", "Pon", "Po") # Soy un vector de caracteres
## [1] "Quen" "Pon" "Po"
# Noten las " ". # Si no las incluyen, R asumirá que cada palabra se refiere a un objeto.
c(Quen, Pon, Po) #Error: object 'Quen' not found
sr_vector_car <- c("Quen", "Pon", "Po") # Y me llamo...
sr_vector_car
Ejemplos con seq():
# Argumentos de la función
seq([Valor inicial],
[Valor final],
[Magnitud de los "brincos"])
seq(8, # Valor inicial
436, # Valor (máximo) final
16) # Magnitud de los "brincos"
## [1] 8 24 40 56 72 88 104 120 136 152 168 184 200 216 232 248 264 ## [18] 280 296 312 328 344 360 376 392 408 424
Ejemplos con rep():
# Argumentos de la función
rep([Dato(s) a repetir],
[Núm. de veces que se debe(n) repetir])
# Ejemplo con un solo dato a repetir
rep(8, # Dato(s) a repetir
30) # Núm. de veces que se debe(n) repetir
## [1] 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
Ejemplos con rep()
# Ejemplo con más de un dato a repetir
rep(c(8,67,5), # Dato(s) a repetir
10) # Núm. de veces que se debe(n) repetir
## [1] 8 67 5 8 67 5 8 67 5 8 67 5 8 67 5 8 67 5 8 67 5 8 67 ## [24] 5 8 67 5 8 67 5
Ejemplos con a:b
1:16
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
4:20
## [1] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Regla básica: vectores siempre deben contener el mismo tipo de datos (numeric, character, factor o logical).
vector <- c("Quen", 1, 345) # ¿Qué tipo de vector seré?
OJO: Si mezclan datos character con algún otro tipo, R asumirá que todos los datos son…
class(vector)
## [1] "character"
vector <- c(as.factor("casa"), 2, 76, FALSE) # ¿Qué tipo de vector seré?
# ¡Que nervio!
OJO 2: Si mezclan datos factor y/o logical con datos numeric, R asumirá que todos los datos son…
class(vector)
## [1] "numeric"
Ahora, noten la diferencia:
vector <- c(as.factor("casa"), 2, 76, FALSE)
vector_1 <- c(as.factor("casa"), 2, 76, "FALSE")
class(vector)
## [1] "numeric"
class(vector_1)
## [1] "character"
¿Por qué pasa esto en el caso del vector c(as.factor("casa"), 2, 76, FALSE)?
Porque cuando R detecta datos numeric y NO detecta datos character, transforma los datos de tipo factor y logical en números.
factorlogicalTRUE y FALSE.TRUE = 1 FALSE = 0
En consecuencia, ¿cuál creen que sea el resultado de esta operación?
misterio_sin_resolver <- sum(c(FALSE, TRUE, TRUE, FALSE, TRUE, FALSE))
misterio_sin_resolver
## [1] 3
Esto porque hay tres TRUE en el vector que sumamos.
Las matrices se crean combinando vectores del mismo tipo y dimensiones.

Las matrices se crean combinando vectores del mismo tipo y dimensiones.
Para ello, existen diferentes funciones.
Por ejemplo, podemos usar cbind() o rbind().
# Ejemplo con cbind() - Column bind a <- c(34, 26, 89) # Soy un vector b <- c(1, 22, 18) # Soy otro vector matriz <- cbind(a, b) matriz
## a b ## [1,] 34 1 ## [2,] 26 22 ## [3,] 89 18
# Ejemplo con rbind() - Row bind a <- c(34, 26, 89) # Soy un vector b <- c(1, 22, 18) # Soy otro vector matriz <- rbind(a, b) matriz
## [,1] [,2] [,3] ## a 34 26 89 ## b 1 22 18
Ejemplo con vectores character:
a <- c("bajo", "medio", "alto")
b <- c("azul", "rojo", "blanco")
matriz <- cbind(a, b)
matriz
## a b ## [1,] "bajo" "azul" ## [2,] "medio" "rojo" ## [3,] "alto" "blanco"
Si combinamos vectores numeric y character o factor en una matriz, R asumirá que todos los vectores son character o factor.
a <- c(34, 26, 89) # Soy un vector numeric
b <- c("azul", "rojo", "blanco") # Soy un vector character
matriz <- cbind(a, b)
matriz
## a b ## [1,] "34" "azul" ## [2,] "26" "rojo" ## [3,] "89" "blanco"
Si combinamos vectores de diferentes dimensiones en una matriz, R:
a <- c(34, 26, 89) # Soy un vector con tres valores b <- c(34, 26, 89, 13, 45) # Soy un vector con cinco valores matriz <- cbind(a, b)
## Warning in cbind(a, b): number of rows of result is not a multiple of ## vector length (arg 1)
matriz
## a b ## [1,] 34 34 ## [2,] 26 26 ## [3,] 89 89 ## [4,] 34 13 ## [5,] 26 45
Otra forma de construir matrices: matrix()
matriz <- matrix(c(34, 67, 89, 1, 45, 90, 10, 34),
nrow = 2, # Número de renglones
ncol = 4) # Número de columnas
matriz
## [,1] [,2] [,3] [,4] ## [1,] 34 89 45 10 ## [2,] 67 1 90 34
matriz <- matrix(c(34, 67, 89, 1, 45, 90, 10, 34),
nrow = 2) # Sólo número de renglones
matriz
## [,1] [,2] [,3] [,4] ## [1,] 34 89 45 10 ## [2,] 67 1 90 34
matriz <- matrix(c(34, 67, 89, 1, 45, 90, 10, 34),
ncol = 4) # Sólo número de columnas
matriz
## [,1] [,2] [,3] [,4] ## [1,] 34 89 45 10 ## [2,] 67 1 90 34
¿Qué pasa si no especificamos el número de renglones o columnas?
matriz <- matrix(c(34, 67, 89, 1, 45, 90, 10, 34)) matriz
## [,1] ## [1,] 34 ## [2,] 67 ## [3,] 89 ## [4,] 1 ## [5,] 45 ## [6,] 90 ## [7,] 10 ## [8,] 34
Al igual que las matrices, los data frames se crean combinando vectores.
La gran diferencia respecto a las matrices es que un data frames puede ser integrado por vectores de diferente tipo.
Para generar un data frame, hay dos opciones:
data.frame() del paquete basedata_frame() del paquete tibbleCon data.frame():
edad <- c(34, 26, 89) # Soy un vector y seré la primera columna
color <- c("azul", "rojo", "blanco") # Soy otro vector y seré la segunda columna
d.f <- data.frame(edad, color)
d.f
## edad color ## 1 34 azul ## 2 26 rojo ## 3 89 blanco
También podemos definir los vectores directamente dentro de data.frame():
d.f <- data.frame(edad = c(34, 26, 89),
color = c("azul", "rojo", "blanco"))
d.f
## edad color ## 1 34 azul ## 2 26 rojo ## 3 89 blanco
Dentro de data.frame() usamos "=", no "<-".
Con data_frame():
library(tibble) # O, en su caso, al cargar tidyverse
d_f <- data_frame(edad = c(34, 26, 89),
color = c("azul", "rojo", "blanco"))
d_f
## # A tibble: 3 x 2 ## edad color ## <dbl> <chr> ## 1 34 azul ## 2 26 rojo ## 3 89 blanco
*Ustedes piensan:*
data.frame() y data_frame(), ¿no?"*Yo les respondo (telepáticamente):*
A diferencia de data.frame(), la función data_frame():
Vamos a usar el mismo archivo, pero descargándolo con read.csv() y read_csv().
Los archivos cargados con:
read.csv() guardan la bd con data.frames()read_csv() guardan la bd con data_frames()# Con read.csv()
b.d <- read.csv(url("http://segasi.com.mx/clases/cide/vis_man/datos/bd_iesp_07_10.csv"))
# Con read_csv()
library(readr) # Cargar readr
b_d <- read_csv("http://segasi.com.mx/clases/cide/vis_man/datos/bd_iesp_07_10.csv")
class(b.d)
## [1] "data.frame"
class(b_d)
## [1] "tbl_df" "tbl" "data.frame"
A diferencia de data.frame(), la función data_frame():
character a factor).str(b.d)
## 'data.frame': 129 obs. of 8 variables: ## $ yr : int 2007 2008 2009 2007 2008 2009 2007 2008 2009 2007 ... ## $ inst : Factor w/ 43 levels "Benemerita Universidad Autonoma de Puebla",..: 1 1 1 2 2 2 3 3 3 4 ... ## $ acronimo: Factor w/ 43 levels "BUAP","CINVESTAV",..: 1 1 1 2 2 2 4 4 4 3 ... ## $ d1 : int 3264 3141 3169 634 544 566 635 610 379 177 ... ## $ m1 : int 44545 45524 50088 1844 2004 2109 852 843 855 331 ... ## $ pa1 : int 170 162 139 56 54 54 38 37 33 18 ... ## $ s2 : num 2042 2069 2210 1657 1754 ... ## $ tipo : Factor w/ 2 levels "Estatal","Federal": 1 1 1 2 2 2 2 2 2 2 ...
str(b_d)
## Classes 'tbl_df', 'tbl' and 'data.frame': 129 obs. of 8 variables: ## $ yr : int 2007 2008 2009 2007 2008 2009 2007 2008 2009 2007 ... ## $ inst : chr "Benemerita Universidad Autonoma de Puebla" "Benemerita Universidad Autonoma de Puebla" "Benemerita Universidad Autonoma de Puebla" "Centro de Investigacion y de Estudios Avanzados del IPN" ... ## $ acronimo: chr "BUAP" "BUAP" "BUAP" "CINVESTAV" ... ## $ d1 : int 3264 3141 3169 634 544 566 635 610 379 177 ... ## $ m1 : int 44545 45524 50088 1844 2004 2109 852 843 855 331 ... ## $ pa1 : int 170 162 139 56 54 54 38 37 33 18 ... ## $ s2 : num 2042 2069 2210 1657 1754 ... ## $ tipo : chr "Estatal" "Estatal" "Estatal" "Federal" ... ## - attr(*, "spec")=List of 2 ## ..$ cols :List of 8 ## .. ..$ yr : list() ## .. .. ..- attr(*, "class")= chr "collector_integer" "collector" ## .. ..$ inst : list() ## .. .. ..- attr(*, "class")= chr "collector_character" "collector" ## .. ..$ acronimo: list() ## .. .. ..- attr(*, "class")= chr "collector_character" "collector" ## .. ..$ d1 : list() ## .. .. ..- attr(*, "class")= chr "collector_integer" "collector" ## .. ..$ m1 : list() ## .. .. ..- attr(*, "class")= chr "collector_integer" "collector" ## .. ..$ pa1 : list() ## .. .. ..- attr(*, "class")= chr "collector_integer" "collector" ## .. ..$ s2 : list() ## .. .. ..- attr(*, "class")= chr "collector_double" "collector" ## .. ..$ tipo : list() ## .. .. ..- attr(*, "class")= chr "collector_character" "collector" ## ..$ default: list() ## .. ..- attr(*, "class")= chr "collector_guess" "collector" ## ..- attr(*, "class")= chr "col_spec"
Por default, data.frame() (y read.csv()) asume que todas las variables que incluyan cadenas de texto son de tipo factor.
Si quieren evitar esto, deben establecer el argumento stringsAsFactors = FALSE.
data.frame(...,
stringsAsFactors = FALSE)
read.csv(...,
stringsAsFactors = FALSE)
A diferencia de data.frame(), la función data_frame():
character a factor).# Con data.frame()
d.f_1 <- data.frame(1980 = c(10, 20, 30),
1981 = c(30, 20, 10),
1982 = c(0, 0, 0))
# Error: unexpected '=' in "prueba_1 <- data.frame(1980 ="
d.f_2 <- data.frame(`1980` = c(10, 20, 30),
`1981` = c(30, 20, 10),
`1982` = c(0, 0, 0))
d.f_2
## X1980 X1981 X1982 ## 1 10 30 0 ## 2 20 20 0 ## 3 30 10 0
# Ahora con data_frame()
d_f_2 <- data_frame(`1980` = c(10, 20, 30),
`1981` = c(30, 20, 10),
`1982` = c(0, 0, 0))
d_f_2
## # A tibble: 3 x 3 ## `1980` `1981` `1982` ## <dbl> <dbl> <dbl> ## 1 10 30 0 ## 2 20 20 0 ## 3 30 10 0
A diferencia de data.frame(), la función data_frame():
character a factor).d.f_2 # Con data.frame()
## X1980 X1981 X1982 ## 1 10 30 0 ## 2 20 20 0 ## 3 30 10 0
d_f_2 # Con data_frame()
## # A tibble: 3 x 3 ## `1980` `1981` `1982` ## <dbl> <dbl> <dbl> ## 1 10 30 0 ## 2 20 20 0 ## 3 30 10 0
A diferencia de data.frame(), la función data_frame():
character a factor).b.d # OJO: No muestro la columna "inst"
## yr acronimo d1 m1 pa1 s2 tipo ## 1 2007 BUAP 3264 44545 170 2041.530 Estatal ## 2 2008 BUAP 3141 45524 162 2069.220 Estatal ## 3 2009 BUAP 3169 50088 139 2209.790 Estatal ## 4 2007 CINVESTAV 634 1844 56 1657.250 Federal ## 5 2008 CINVESTAV 544 2004 54 1754.020 Federal ## 6 2009 CINVESTAV 566 2109 54 1818.780 Federal ## 7 2007 COLPOS 635 852 38 837.388 Federal ## 8 2008 COLPOS 610 843 37 881.013 Federal ## 9 2009 COLPOS 379 855 33 799.195 Federal ## 10 2007 COLMEX 177 331 18 504.647 Federal ## 11 2008 COLMEX 179 357 18 443.303 Federal ## 12 2009 COLMEX 184 369 18 455.061 Federal ## 13 2007 IPN 8771 84816 176 9018.840 Federal ## 14 2008 IPN 9027 87225 189 9593.430 Federal ## 15 2009 IPN 9537 91426 198 9959.150 Federal ## 16 2007 IT Sonora 1632 14735 73 220.329 Estatal ## 17 2008 IT Sonora 1632 14735 73 227.793 Estatal ## 18 2009 IT Sonora 1632 14807 76 242.269 Estatal ## 19 2007 UAAAN 507 4071 36 702.954 Federal ## 20 2008 UAAAN 512 4537 34 673.290 Federal ## 21 2009 UAAAN 484 4746 33 739.929 Federal ## 22 2007 UABJ Oaxaca 1138 18885 41 432.702 Estatal ## 23 2008 UABJ Oaxaca 1221 18698 52 451.419 Estatal ## 24 2009 UABJ Oaxaca 1395 18560 49 505.264 Estatal ## 25 2007 UA Chapingo 686 4019 45 1730.000 Federal ## 26 2008 UA Chapingo 713 4125 44 1789.990 Federal ## 27 2009 UA Chapingo 732 4093 45 1899.090 Federal ## 28 2007 UA Aguascalientes 1422 11660 100 449.535 Estatal ## 29 2008 UA Aguascalientes 1418 11548 115 455.806 Estatal ## 30 2009 UA Aguascalientes 1384 11674 111 473.601 Estatal ## 31 2007 UABC 3351 35067 159 913.368 Estatal ## 32 2008 UABC 3860 38004 145 910.845 Estatal ## 33 2009 UABC 3141 41768 151 956.367 Estatal ## 34 2007 UABCS 382 5330 41 213.757 Estatal ## 35 2008 UABCS 426 4890 39 215.510 Estatal ## 36 2009 UABCS 568 4805 40 225.499 Estatal ## 37 2007 UA Campeche 437 5177 34 321.097 Estatal ## 38 2008 UA Campeche 426 5424 63 340.539 Estatal ## 39 2009 UA Campeche 452 5898 66 355.487 Estatal ## 40 2007 UA Chiapas 1467 18486 110 518.367 Estatal ## 41 2008 UA Chiapas 1576 18754 99 521.721 Estatal ## 42 2009 UA Chiapas 1600 20144 111 560.051 Estatal ## 43 2007 UA Chihuahua 2264 21124 145 474.324 Estatal ## 44 2008 UA Chihuahua 2573 22378 147 487.283 Estatal ## 45 2009 UA Chihuahua 2348 23942 128 516.201 Estatal ## 46 2007 UA Cd. Juárez 1729 18653 72 523.440 Estatal ## 47 2008 UA Cd. Juárez 1915 19518 74 545.081 Estatal ## 48 2009 UA Cd. Juárez 2059 19982 85 591.923 Estatal ## 49 2007 UA Coahuila 1855 21458 144 717.712 Estatal ## 50 2008 UA Coahuila 1960 21728 122 741.508 Estatal ## 51 2009 UA Coahuila 2032 22848 123 768.885 Estatal ## 52 2007 UA Guerrero 1096 21717 60 936.427 Estatal ## 53 2008 UA Guerrero 1141 22156 76 933.767 Estatal ## 54 2009 UA Guerrero 1099 22427 73 997.821 Estatal ## 55 2007 UA Nayarit 1016 10684 49 675.053 Estatal ## 56 2008 UA Nayarit 732 11895 48 714.418 Estatal ## 57 2009 UA Nayarit 1059 12226 53 802.215 Estatal ## 58 2007 UANL 4931 66400 281 2723.380 Estatal ## 59 2008 UANL 5315 68940 262 2821.150 Estatal ## 60 2009 UANL 5742 71650 230 2958.470 Estatal ## 61 2007 UA Querétaro 1589 14372 132 648.650 Estatal ## 62 2008 UA Querétaro 1691 15279 137 649.820 Estatal ## 63 2009 UA Querétaro 1770 15863 149 711.703 Estatal ## 64 2007 UASLP 1878 20640 114 1038.120 Estatal ## 65 2008 UASLP 1670 21775 136 1043.550 Estatal ## 66 2009 UASLP 1684 22265 136 1113.640 Estatal ## 67 2007 UA Sinaloa 2868 46430 147 1909.630 Estatal ## 68 2008 UA Sinaloa 3093 47757 154 1913.160 Estatal ## 69 2009 UA Sinaloa 3161 48189 157 2024.910 Estatal ## 70 2007 UA Tamaulipas 2657 39353 185 1178.080 Estatal ## 71 2008 UA Tamaulipas 2769 40574 207 1211.130 Estatal ## 72 2009 UA Tamaulipas 2439 40413 223 1255.710 Estatal ## 73 2007 UA Tlaxcala 1140 10421 53 330.205 Estatal ## 74 2008 UA Tlaxcala 1171 9870 60 335.932 Estatal ## 75 2009 UA Tlaxcala 1161 9713 60 371.735 Estatal ## 76 2007 UA Yucatán 1024 11237 94 1058.180 Estatal ## 77 2008 UA Yucatán 939 11638 95 1069.320 Estatal ## 78 2009 UA Yucatán 910 12439 96 1122.500 Estatal ## 79 2007 UA Zacatecas 1497 15000 87 739.387 Estatal ## 80 2008 UA Zacatecas 1541 17463 96 769.804 Estatal ## 81 2009 UA Zacatecas 1735 18117 92 802.007 Estatal ## 82 2007 UA del Carmen 449 3983 57 159.914 Estatal ## 83 2008 UA del Carmen 385 4066 56 178.769 Estatal ## 84 2009 UA del Carmen 383 4248 40 187.378 Estatal ## 85 2007 UAE Hidalgo 2407 19760 95 613.600 Estatal ## 86 2008 UAE Hidalgo 2322 19714 88 650.807 Estatal ## 87 2009 UAE Hidalgo 2111 20445 90 672.123 Estatal ## 88 2007 UAE México 4399 35274 219 835.082 Estatal ## 89 2008 UAE México 4593 36299 242 849.976 Estatal ## 90 2009 UAE México 4668 36466 249 901.268 Estatal ## 91 2007 UAE Morelos 1298 11470 82 525.284 Estatal ## 92 2008 UAE Morelos 1260 11414 87 541.133 Estatal ## 93 2009 UAE Morelos 1296 11967 86 565.363 Estatal ## 94 2007 UAM 5329 46418 114 4449.930 Federal ## 95 2008 UAM 5329 46418 114 4734.530 Federal ## 96 2009 UAM 5809 50131 142 5035.770 Federal ## 97 2007 U de Colima 1151 10883 124 788.964 Estatal ## 98 2008 U de Colima 1183 11495 121 783.403 Estatal ## 99 2009 U de Colima 1341 11670 115 862.730 Estatal ## 100 2007 U de G 7059 74265 363 2290.110 Estatal ## 101 2008 U de G 10614 77316 385 2351.310 Estatal ## 102 2009 U de G 7439 82543 336 2522.470 Estatal ## 103 2007 U de Guanajuato 1689 13188 119 722.554 Estatal ## 104 2008 U de Guanajuato 1838 14567 127 764.210 Estatal ## 105 2009 U de Guanajuato 1869 15876 128 810.652 Estatal ## 106 2007 UQRoo 336 3179 35 104.457 Estatal ## 107 2008 UQRoo 321 3260 35 107.700 Estatal ## 108 2009 UQRoo 312 3265 33 118.010 Estatal ## 109 2007 UNISON 1959 22830 114 577.052 Estatal ## 110 2008 UNISON 2021 23540 125 591.254 Estatal ## 111 2009 UNISON 1648 23249 138 659.729 Estatal ## 112 2007 UJA Tabasco 2151 26129 66 470.750 Estatal ## 113 2008 UJA Tabasco 2029 25978 77 490.902 Estatal ## 114 2009 UJA Tabasco 2098 26068 81 553.176 Estatal ## 115 2007 UJE Durango 1222 10643 67 515.484 Estatal ## 116 2008 UJE Durango 1329 10987 79 526.327 Estatal ## 117 2009 UJE Durango 1369 11788 93 553.281 Estatal ## 118 2007 UMSNH 2216 36135 77 962.714 Estatal ## 119 2008 UMSNH 3163 38079 103 970.837 Estatal ## 120 2009 UMSNH 3163 38079 103 1035.530 Estatal ## 121 2007 UNAM 26887 185029 364 22138.800 Federal ## 122 2008 UNAM 33577 186641 338 23128.600 Federal ## 123 2009 UNAM 29172 193992 318 24302.200 Federal ## 124 2007 UPN 5200 65736 362 609.334 Federal ## 125 2008 UPN 4961 63587 353 644.665 Federal ## 126 2009 UPN 4870 62784 359 654.521 Federal ## 127 2007 U Veracruzana 4677 49142 220 1395.420 Estatal ## 128 2008 U Veracruzana 4530 51383 232 1415.240 Estatal ## 129 2009 U Veracruzana 4347 53542 242 1541.100 Estatal
b_d # OJO: No muestro la columna "inst"
## # A tibble: 129 x 7 ## yr acronimo d1 m1 pa1 s2 tipo ## <int> <chr> <int> <int> <int> <dbl> <chr> ## 1 2007 BUAP 3264 44545 170 2041.530 Estatal ## 2 2008 BUAP 3141 45524 162 2069.220 Estatal ## 3 2009 BUAP 3169 50088 139 2209.790 Estatal ## 4 2007 CINVESTAV 634 1844 56 1657.250 Federal ## 5 2008 CINVESTAV 544 2004 54 1754.020 Federal ## 6 2009 CINVESTAV 566 2109 54 1818.780 Federal ## 7 2007 COLPOS 635 852 38 837.388 Federal ## 8 2008 COLPOS 610 843 37 881.013 Federal ## 9 2009 COLPOS 379 855 33 799.195 Federal ## 10 2007 COLMEX 177 331 18 504.647 Federal ## # ... with 119 more rows
head(x) - Imprime los primeros renglones del objetotail(x) - Imprime los últimos renglones del objetoView(x) - Abre el objeto entero en una nueva ventananrow() - Número de renglonesncol() - Número de columnasdim() - Número de renglones y columnasrownames() - Muestra los nombres de los renglonescolnames() - Muestra los nombres de las columnasnames() - Muestra los nombres de las columnasstr() - Muestra la estructura del data frame (dimensiones y tipos de cada variable)bd <- read.csv(url("http://segasi.com.mx/clases/cide/vis_man/datos/bd_iesp_07_10.csv"))
head(bd)
## yr inst acronimo ## 1 2007 Benemerita Universidad Autonoma de Puebla BUAP ## 2 2008 Benemerita Universidad Autonoma de Puebla BUAP ## 3 2009 Benemerita Universidad Autonoma de Puebla BUAP ## 4 2007 Centro de Investigacion y de Estudios Avanzados del IPN CINVESTAV ## 5 2008 Centro de Investigacion y de Estudios Avanzados del IPN CINVESTAV ## 6 2009 Centro de Investigacion y de Estudios Avanzados del IPN CINVESTAV ## d1 m1 pa1 s2 tipo ## 1 3264 44545 170 2041.53 Estatal ## 2 3141 45524 162 2069.22 Estatal ## 3 3169 50088 139 2209.79 Estatal ## 4 634 1844 56 1657.25 Federal ## 5 544 2004 54 1754.02 Federal ## 6 566 2109 54 1818.78 Federal
tail(bd)
## yr inst acronimo d1 m1 pa1 ## 124 2007 Universidad Pedagogica Nacional UPN 5200 65736 362 ## 125 2008 Universidad Pedagogica Nacional UPN 4961 63587 353 ## 126 2009 Universidad Pedagogica Nacional UPN 4870 62784 359 ## 127 2007 Universidad Veracruzana U Veracruzana 4677 49142 220 ## 128 2008 Universidad Veracruzana U Veracruzana 4530 51383 232 ## 129 2009 Universidad Veracruzana U Veracruzana 4347 53542 242 ## s2 tipo ## 124 609.334 Federal ## 125 644.665 Federal ## 126 654.521 Federal ## 127 1395.420 Estatal ## 128 1415.240 Estatal ## 129 1541.100 Estatal
View(bd)
# Número de renglones nrow(bd)
## [1] 129
# Número de columnas ncol(bd)
## [1] 8